﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Recherche A*</title>
		<link rel="stylesheet" type="text/css" href="style.css" />
	</head>
	<body class="twoColFixLtHdr">
    <div id="container">
		<div id="header">Algorithme de recherche de chemin A*</div>

		<div id="menu">
			<ul>
				<li><a href="index.html">Accueil</a></li>
				<li><a href="presentation.html">Présentation</a></li>
				<li><a href="connaissances.html">Connaissances</a></li>
				<li><a href="demarche.html">Démarche</a></li>
				<li><a href="difficultes.html">Difficultés</a></li>
				<li><a href="analyse.html">Analyse</a></li>
				<li><a href="conclusion.html">Conclusion</a></li>
				<li><a href="bibliographie.html">Bibliographie</a></li>
				<li><a href="glossaire.html">Glossaire</a></li>
				<li><a href="telechargement.html">Téléchargement</a></li>
			</ul>
		</div>

		<div id="content"><br />
			<h1><a name="top">Démarche expérimentale</a></h1>
			<a href="#techno">Cadre technologique</a><br />
			<a href="#prep">Préparer le développement de l'application</a><br />
			<a href="#app">Développer l'application</a><br />
			<br />
			<br />
			<h2><a name="techno">Cadre technologique</a></h2>
			<h3>Outils à utiliser</h3>
			Le seul outil que nous avons utilisé est l’éditeur de carte et il a été créé par nous même. Il sert à positionner les nœuds par lequel les personnages pourront passer.<br />
			<h3>Architecture de l'application</h3>
			<h4>Version Console</h4>
			<img src="archi_console.JPG" alt="" /><br />
			La classe Application sert à charger la carte, l’afficher et faire la boucle du programme. Elle utilise AStar pour être capable de trouver le chemin en lui passant la carte, sa position et sa destination.
			<h4>Version Éditeur</h4>
			<img src="archi_editeur.JPG" alt="" /><br />
			L’éditeur peut tenir dans une seule classe puisque nous utilisons un système qui nous permet de dessiner dans les fenêtres Windows déjà fait. Cette classe gère la création de la fenêtre, la fermeture, le déplacement de tous les objets grâce à la souris et les appels de fonction pour dessiner la carte.
			<h4>Version A* Windows</h4>
			<img src="archi_Astar.JPG" alt="" /><br />
			La classe AStarApplication sert à tout ce qui est de la gestion de la fenêtre. La création du programme, la fermeture et dessiner la carte et tous les objets dessus.  Elle a un AStar qui s’occupe de calculer le chemin et d’avancer. Elle contient également une classe Character qui permet d’afficher un bonhomme qui se promène sur la carte à l’endroit que l’on a cliqué avec le curseur.<br /><br />
			<a href="#top">Retourner en haut</a><br />
			<h2><a name="prep">Préparer le développement de l'application</a></h2>
			<h3>Logiciels</h3>
			Photofiltre a été utiliser pour la création des cartes en format Bitmap. Tous les autres logiciels de dessin (comme Microsoft Paint ou Adobe Photoshop) peuvent être utilisés.<br />
			<br />
			CR-Hexact et HxD ont été utilisés pour visionner et éditer notre format de fichier binarisé.
			<h3>Environnement</h3>
			L’environnement de développement utilisé est uniquement Microsoft Visual Studio 2005.
			<h3>Outils de planification</h3>
			La planification a été faite dans un tableau et elle a été mise à jour au commencement et après la création du prototype console. Par la suite, nous avons tenu à jour notre feuille de temps.
			<h4>Planification à jour</h4>
			<table width="100%">
			<tr>
				<td><b>Quoi</b></td>
				<td><b>Combien</b></td>
				<td><b>Qui</b></td></tr>
			</tr>
			<tr>
				<td>Compréhension de l’algorithme de base A*</td>
				<td>4h</td>
				<td>F/B</td>
			</tr>
			<tr>
				<td>Programmation de la classe de A* de base</td>
				<td>4h</td>
				<td>F</td>
			</tr>
			<tr>
				<td>Programmation de la classe de A* de base</td>
				<td>4h</td>
				<td>F</td>
			</tr>
			<tr>
				<td>Programmation d’un prototype pour tester en console</td>
				<td>8h</td>
				<td>B</td>
			</tr>
			<tr>
				<td>Création d’une fenêtre que l’on peut dessiner des carrés <s>et défiler</s></td>
				<td>10h</td>
				<td>B</td>
			</tr>
			<tr>
				<td>Écrire une carte et la charger</td>
				<td>3h</td>
				<td>F</td>
			</tr>
			<tr>
				<td>Compréhension de l’algorithme A* par points visibles</td>
				<td>10h</td>
				<td>B</td>
			</tr>
			<tr>
				<td>Programmation du A* par points visibles</td>
				<td>10h</td>
				<td>F</td>
			</tr>
			<tr>
				<td>Contrôle du personnage avec le clic et bouger à l’endroit sur la carte</td>
				<td>15h</td>
				<td>B</td>
			</tr>
			<tr>
				<td><s>Compréhension de l’algorithme de la réutilisation des nœuds</s></td>
			</tr>
			<tr>
				<td><s>Optimisation du A* grâce à la réutilisation des nœuds</s></td>
			</tr>
			<tr>
				<td><s>Ajout d’un ennemi qui suit le joueur</s></td>
			</tr>
			<tr>
				<td><s>Recherche et implémentation de toutes les autres optimisations possibles</s></td>
			</tr>
			<tr>
				<td><b>Total</b></td>
				<td><b>60h</b></td>
			</tr>
			</table>
			<h3>Méthodes de suivi des activités de recherche</h3>
			Le suivi des activités est fait en détail dans le fichier <a href="625-SuiviActivite.doc">625-SuiviActivite.doc</a>.<br /><br />
			<a href="#top">Retourner en haut</a><br />
			<h2><a name="app">Développer l'application</a></h2>
			<h3>Spécialisations techniques</h3>
			<h4>Version console</h4>
			Nous avons décider de créer notre propre format de fichier de carte grâce à des 0 qui représente une case vide, des 1 qui représente un mur, un S qui représente la position du joueur et un E qui représente la destination du joueur.<br />
			<h4>Version Éditeur Windows</h4>
			Pour l’éditeur Windows, il est possible de créer des nœuds, des liens entre les nœuds et des boites de collision. Pour faire un nœud, il suffit de cliquer à un endroit avec la souris. Pour lier deux nœuds, il faut en sélectionner un, cliquer dessus et glisser le curseur sur l’autre nœud. Pour créer une boite de collision, il faut enfoncer le bouton de la souris dans le vide et glisser le curseur jusqu’à ce que la boite soit de la grandeur désirée. Il est également possible de supprimer des nœuds en les sélectionnant et en appuyant sur le bouton de droit dessus.<br /><br />

			<a href="#top">Retourner en haut</a><br />
		</div>
		<br class="clearfloat" />
		<div id="footer"><br /><p align="center">Par Benoît Tremblay et François Roseberry</p></div>
    </div>
	</body>
</html>